/**
 */
package org.xtext.mydsl.scheduler.util;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

import org.xtext.mydsl.scheduler.*;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see org.xtext.mydsl.scheduler.SchedulerPackage
 * @generated
 */
public class SchedulerSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static SchedulerPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public SchedulerSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = SchedulerPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case SchedulerPackage.CONFERENCIA:
      {
        Conferencia conferencia = (Conferencia)theEObject;
        T result = caseConferencia(conferencia);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.DIA:
      {
        Dia dia = (Dia)theEObject;
        T result = caseDia(dia);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.DICTA:
      {
        Dicta dicta = (Dicta)theEObject;
        T result = caseDicta(dicta);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.BLOCK:
      {
        Block block = (Block)theEObject;
        T result = caseBlock(block);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ACTIVIDAD:
      {
        Actividad actividad = (Actividad)theEObject;
        T result = caseActividad(actividad);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.INFORMACION_ACTIVIDAD:
      {
        InformacionActividad informacionActividad = (InformacionActividad)theEObject;
        T result = caseInformacionActividad(informacionActividad);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.CHARLA:
      {
        Charla charla = (Charla)theEObject;
        T result = caseCharla(charla);
        if (result == null) result = caseActividad(charla);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.MESA_DEBATE:
      {
        MesaDebate mesaDebate = (MesaDebate)theEObject;
        T result = caseMesaDebate(mesaDebate);
        if (result == null) result = caseActividad(mesaDebate);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.TALLER:
      {
        Taller taller = (Taller)theEObject;
        T result = caseTaller(taller);
        if (result == null) result = caseActividad(taller);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ORADOR:
      {
        Orador orador = (Orador)theEObject;
        T result = caseOrador(orador);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.TRACK:
      {
        Track track = (Track)theEObject;
        T result = caseTrack(track);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.TIME:
      {
        Time time = (Time)theEObject;
        T result = caseTime(time);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ACTIVIDAD_A:
      {
        ActividadA actividadA = (ActividadA)theEObject;
        T result = caseActividadA(actividadA);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.REFRIGERIO:
      {
        Refrigerio refrigerio = (Refrigerio)theEObject;
        T result = caseRefrigerio(refrigerio);
        if (result == null) result = caseActividadA(refrigerio);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.BREAK:
      {
        Break break_ = (Break)theEObject;
        T result = caseBreak(break_);
        if (result == null) result = caseActividadA(break_);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.INAGURACION:
      {
        Inaguracion inaguracion = (Inaguracion)theEObject;
        T result = caseInaguracion(inaguracion);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.CIERRE:
      {
        Cierre cierre = (Cierre)theEObject;
        T result = caseCierre(cierre);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ESPACIO:
      {
        Espacio espacio = (Espacio)theEObject;
        T result = caseEspacio(espacio);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ESPACIO_REGULAR:
      {
        EspacioRegular espacioRegular = (EspacioRegular)theEObject;
        T result = caseEspacioRegular(espacioRegular);
        if (result == null) result = caseEspacio(espacioRegular);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.ESPACIO_PC:
      {
        EspacioPC espacioPC = (EspacioPC)theEObject;
        T result = caseEspacioPC(espacioPC);
        if (result == null) result = caseEspacio(espacioPC);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case SchedulerPackage.INFO_ESPACIO:
      {
        InfoEspacio infoEspacio = (InfoEspacio)theEObject;
        T result = caseInfoEspacio(infoEspacio);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Conferencia</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Conferencia</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConferencia(Conferencia object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dia</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dia</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDia(Dia object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Dicta</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Dicta</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDicta(Dicta object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Block</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Block</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBlock(Block object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Actividad</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Actividad</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseActividad(Actividad object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Informacion Actividad</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Informacion Actividad</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInformacionActividad(InformacionActividad object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Charla</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Charla</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCharla(Charla object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Mesa Debate</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Mesa Debate</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseMesaDebate(MesaDebate object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Taller</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Taller</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTaller(Taller object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Orador</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Orador</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseOrador(Orador object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Track</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Track</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTrack(Track object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Time</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Time</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseTime(Time object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Actividad A</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Actividad A</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseActividadA(ActividadA object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Refrigerio</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Refrigerio</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseRefrigerio(Refrigerio object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Break</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Break</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseBreak(Break object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Inaguracion</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Inaguracion</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInaguracion(Inaguracion object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Cierre</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Cierre</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseCierre(Cierre object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Espacio</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Espacio</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEspacio(Espacio object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Espacio Regular</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Espacio Regular</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEspacioRegular(EspacioRegular object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Espacio PC</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Espacio PC</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseEspacioPC(EspacioPC object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Info Espacio</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Info Espacio</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseInfoEspacio(InfoEspacio object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //SchedulerSwitch
